package gxwl.common.combine;

import io.swagger.v3.oas.annotations.Operation;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.lang.annotation.*;

/**
 * 整合 @{@link Operation}、@{@link PostMapping}
 * @author jiangwh
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Operation
@RequestMapping(method = RequestMethod.POST)
public @interface PostApi {

    /**
     * Swagger UI 方法名称<br>
     * Alias for {@link Operation#summary}
     */
    @AliasFor(annotation = Operation.class, attribute = "summary")
    String description();

    /**
     * Alias for {@link RequestMapping#value}
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] value() default {};

    /**
     * Alias for {@link RequestMapping#params}
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] params() default {};

    /**
     * Alias for {@link RequestMapping#headers}
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] headers() default {};

    /**
     * Alias for {@link RequestMapping#consumes}
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] consumes() default {};

    /**
     * Alias for {@link RequestMapping#produces}
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] produces() default {};

}

